const { app, BrowserWindow, ipcMain } = require('electron')
// 在你文件顶部导入 Node.js 的 path 模块
const path = require('node:path')

// __dirname 字符串指向当前正在执行脚本的路径 (在本例中，它指向你的项目的根文件夹)。
// path.join API 将多个路径联结在一起，创建一个跨平台的路径字符串。
const createWindow = function () {
  const win = new BrowserWindow({
    width: 800,
    height: 600,
    // frame: false,
    webPreferences: {
      preload: path.join(__dirname, 'preload.js'),
    },
  })

  win.loadFile('index.html')
}

app.whenReady().then(() => {
  let num = 0
  ipcMain.handle('ping', () => {
    console.log(num)
    return 'pong' + num++
  })

  createWindow()

  // 当 Linux 和 Windows 应用在没有窗口打开时退出了, macOS 应用通常即使在没有打开任何窗口的情况下也继续运行,
  // 并且在没有窗口可用的情况下激活应用时会打开新的窗口,
  // 为了实现这一特性，监听 app 模块的 activate 事件。如果没有任何浏览器窗口是打开的，则调用 createWindow() 方法。
  app.on('activate', () => {
    if (BrowserWindow.getAllWindows().length === 0) createWindow()
  })
})

// 关闭所有窗口完全退出应用程序
// 如果用户不是在 macOS(darwin) 上运行程序，则调用 app.quit()
app.on('window-all-closed', () => {
  if (process.platform !== 'darwin') app.quit()
})
